package fr.afcepf.atod18.restaurants.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import fr.afcepf.atod18.restaurants.entity.Carte;
import fr.afcepf.atod18.restaurants.entity.Produit;
import fr.afcepf.atod18.restaurants.entity.Restaurant;
import fr.afcepf.atod18.utilitaires.dao.IGenericDao;

@Service
@Transactional
public class ServiceRestaurant implements IServiceRestaurant {
	@Autowired
	IGenericDao<Restaurant> daoRestaurant;


	@Override
	public void ajouter(Restaurant restaurant) {
		daoRestaurant.save(restaurant);
	}
	@Override
	public Restaurant mettreAJour(Restaurant restaurant) {
	    return daoRestaurant.update(restaurant);
	}
	@Override
	public Restaurant rechercherParId(int id) {
	    return daoRestaurant.findOne(id);
	}
	@Override
	public List<Restaurant> rechercherTout() {
		return daoRestaurant.findAll();
	}
	@Override
	public void supprimerParId(int id) {
	    daoRestaurant.deleteById(id);
	}
	@Override
	public void supprimer(Restaurant restaurant) {
	    daoRestaurant.delete(restaurant);
	}
    @Override
	public void supprimerListe(List<Restaurant> liste) {
		daoRestaurant.deleteList(liste);
	}
    @Override
    public List<Restaurant> rechercherParNom(String nomColonne, String libelle) {
        return daoRestaurant.findByName(nomColonne, libelle);
    }
    @Override
    public List<Produit> rechercherProduitsRestaurant(int id){
        Restaurant restaurant = daoRestaurant.findOne(id);
        Set<Carte> cartes = restaurant.getCartes();
        System.out.println(cartes + " size=" + cartes.size());
        Set<Produit> produits = cartes.iterator().next().getProduits();
        System.out.println(produits + "size=" + produits.size());
        List<Produit> liste = new ArrayList<Produit>(produits);
        return liste;
    }
    
    public IGenericDao<Restaurant> getDaoRestaurant() {
		return daoRestaurant;
	}
	public void setDaoRestaurant(IGenericDao<Restaurant> daoRestaurant) {
		this.daoRestaurant = daoRestaurant;
	}
}
